package chaoyue.study.jdbc;

import com.alibaba.druid.pool.DruidDataSource;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;

/**
 * DataSource 数据源，包含连接池和连接池管理组件两个部分，所以习惯上也经常将DataSource称为连接池
 * DataSource中实际管理的就是Connection对象（即Connection的工厂）原来Connection要从DriverManage中拿，现在从DataSource中拿
 * DataSource也是JDBC的规范
 */
public class Test5_DataSource {
    public static void main(String[] args) throws Exception {
        // 使用druid数据源
        DruidDataSource dataSource1 = new DruidDataSource();
        dataSource1.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource1.setUrl("jdbc:mysql://127.0.0.1:3306/jdbc-study?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false");
        dataSource1.setUsername("root");
        dataSource1.setPassword("123456");

        Connection connection1 = dataSource1.getConnection(); // 从连接池中获取连接对象
        System.out.println(connection1);
        connection1.close(); // 关闭连接对象，将连接对象还给连接池

        // 使用hikari数据源
        HikariDataSource dataSource2 = new HikariDataSource();
        dataSource2.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource2.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/jdbc-study?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false");
        dataSource2.setUsername("root");
        dataSource2.setPassword("123456");
        Connection connection2 = dataSource2.getConnection(); // 从连接池中获取连接对象
        System.out.println(connection2);
        connection2.close();
    }
}
